package com.pkk.penguin.frame.know.java.interview.parampassing;

import com.pkk.penguin.frame.know.java.interview.parampassing.support.SimpleVo;
import java.util.Arrays;
import org.junit.Test;

/**
 * @description: 参数传递的测试
 * @author: peikunkun
 * @create: 2020-01-03 11:43
 **/
public class ParamPassingTests {


  @Test
  public void Administrator_13_20200103131008() {
    System.out.println("欢迎使用单元测试方法【Administrator_13()_20200103131008】");
    System.out.println("此方法测试描述：【参数的传递:"
        + "1:值存放在局部变量表中，无论如何修改只会修改当前栈帧的值，方法执行结束对方法外不会做任何改变；此时需要改变外层的变量，必须返回主动赋值"
        + "2:指针存放在局部变量表中，调用方法的时候，副本引用压栈，赋值仅改变副本的引用。但是如果通过操作副本引用的值，修改了引用地址的对象，此时方法以外的引用此地址对象当然被修改。（两个引用，同一个地址，任何修改行为2个引用同时生效）】");

    int i = 1;
    String str = "hello";
    Integer num = 2;
    SimpleVo my = new SimpleVo("kunzai", "admin");
    int[] arr = {1, 2, 3, 4, 5};
    change(i, num, str, my, arr);
    System.out.println(i);
    System.out.println(num);
    System.out.println(str);
    System.out.println(my);
    System.out.println(Arrays.toString(arr));


  }

  private void change(int j, Integer n, String s, SimpleVo m, int[] a) {
    j += 1;
    n += 1;
    s += "World";
    m.setUsername("geer");
    a[0] += 1;
  }

}
